From 1d70c3df6ac6661617c6eaa03c36a88b522c5570 Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Tue, 24 May 2011 18:25:56 +0100 Subject: [PATCH] libxl: pass device model info down into HVM domain build functions. The builder will soon need to know the device model version in order to select the correct firmware. Signed-off-by: Ian Campbell Acked-by: Ian Jackson Committed-by: Ian Jackson --- tools/libxl/libxl_create.c | 11 +++++++---- tools/libxl/libxl_dm.c | 2 +- tools/libxl/libxl_dom.c | 9 ++++++--- tools/libxl/libxl_internal.h | 8 ++++++-- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index cf8b0e5a04..d63887f800 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -144,8 +144,11 @@ static int init_console_info(libxl_device_console *console, int dev_num) return 0; } -int libxl__domain_build(libxl__gc *gc, libxl_domain_build_info *info, - uint32_t domid, libxl__domain_build_state *state) +int libxl__domain_build(libxl__gc *gc, + libxl_domain_build_info *info, + libxl_device_model_info *dm_info, + uint32_t domid, + libxl__domain_build_state *state) { char **vments = NULL, **localents = NULL; struct timeval start_time; @@ -158,7 +161,7 @@ int libxl__domain_build(libxl__gc *gc, libxl_domain_build_info *info, gettimeofday(&start_time, NULL); if (info->hvm) { - ret = libxl__build_hvm(gc, domid, info, state); + ret = libxl__build_hvm(gc, domid, info, dm_info, state); if (ret) goto out; @@ -437,7 +440,7 @@ static int do_domain_create(libxl__gc *gc, libxl_domain_config *d_config, free(dm_info->saved_state); dm_info->saved_state = NULL; } - ret = libxl__domain_build(gc, &d_config->b_info, domid, &state); + ret = libxl__domain_build(gc, &d_config->b_info, dm_info, domid, &state); } if (ret) { diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index 1ba7fe5b5e..2fb0228b3c 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -611,7 +611,7 @@ static int libxl__create_stubdom(libxl__gc *gc, ret = libxl__domain_make(gc, &c_info, &domid); if (ret) goto out_free; - ret = libxl__domain_build(gc, &b_info, domid, &state); + ret = libxl__domain_build(gc, &b_info, info, domid, &state); if (ret) goto out_free; diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index c34f1ce071..a51e06d5ae 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -270,7 +270,8 @@ static int hvm_build_set_params(xc_interface *handle, uint32_t domid, } static const char *libxl__domain_firmware(libxl__gc *gc, - libxl_domain_build_info *info) + libxl_domain_build_info *info, + libxl_device_model_info *dm_info) { return libxl__abs_path(gc, info->u.hvm.firmware ? : "hvmloader", @@ -278,7 +279,9 @@ static const char *libxl__domain_firmware(libxl__gc *gc, } int libxl__build_hvm(libxl__gc *gc, uint32_t domid, - libxl_domain_build_info *info, libxl__domain_build_state *state) + libxl_domain_build_info *info, + libxl_device_model_info *dm_info, + libxl__domain_build_state *state) { libxl_ctx *ctx = libxl__gc_owner(gc); int ret, rc = ERROR_INVAL; @@ -289,7 +292,7 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t domid, domid, (info->max_memkb - info->video_memkb) / 1024, (info->target_memkb - info->video_memkb) / 1024, - libxl__domain_firmware(gc, info)); + libxl__domain_firmware(gc, info, dm_info)); if (ret) { LIBXL__LOG_ERRNOVAL(ctx, LIBXL__LOG_ERROR, ret, "hvm building failed"); goto out; diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index babc44a3a2..777cfce7ca 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -186,7 +186,9 @@ _hidden int libxl__build_post(libxl__gc *gc, uint32_t domid, _hidden int libxl__build_pv(libxl__gc *gc, uint32_t domid, libxl_domain_build_info *info, libxl__domain_build_state *state); _hidden int libxl__build_hvm(libxl__gc *gc, uint32_t domid, - libxl_domain_build_info *info, libxl__domain_build_state *state); + libxl_domain_build_info *info, + libxl_device_model_info *dm_info, + libxl__domain_build_state *state); _hidden int libxl__domain_rename(libxl__gc *gc, uint32_t domid, const char *old_name, const char *new_name, @@ -245,7 +247,9 @@ typedef struct { /* from xl_create */ _hidden int libxl__domain_make(libxl__gc *gc, libxl_domain_create_info *info, uint32_t *domid); -_hidden int libxl__domain_build(libxl__gc *gc, libxl_domain_build_info *info, +_hidden int libxl__domain_build(libxl__gc *gc, + libxl_domain_build_info *info, + libxl_device_model_info *dm_info, uint32_t domid, libxl__domain_build_state *state); -- 2.30.2